GitBook
객체지향의 사실과 오해

1장 협력하는 객체들의 공동체

객체지향 패러다임의 핵심은 상속이 아닌 자율적인 객체들의 협력이다

#책

#객체지향

#객체지향의사실과오해

2022년 04월 01일

객체지향의 사실과 오해를 읽고 개인적으로 정리한 내용입니다

객체지향 패러다임의 핵심은 상속이 아닌 자율적인 객체들의 협력이다

객체지향의 오해


인터넷에서 객체지향의 정의에 대해서 찾아본다면
객체지향이란 실세계를 직접적이고 직관적으로 표현할 수 있는 패러다임 이라는 설명을 쉽게 찾을 수 있다
하지만 실세계와 객체지향을 비유하는 이유는 객체지향의 다양한 측면을 이해하는데 좋기 때문이지
실제로는 사물과 객체지향의 개념적 거리는 유사성을 찾기 힘들 정도로 멀다
객체지향은 실세계를 모방하는 것이 아닌 새로운 객체지향의 세계를 창조하는 것이다!

협력, 역할, 책임


사람들은 어려운 문제를 혼자서 해결하지보다 협력해 해결하기 위해 특정 역할을 맡고 역할에 따른 적합한 책임을 가진다
이는 객체지향도 동일하다.
이는 다음과 같은 특징을 가지게 되는데

  • 여러 사람이 같은 역할을 수행할 수 있다
    • 역할에 따른 책임을 성실이 이행(Response)하기만 하면 된다
  • 역할은 대체 가능하다
  • 책임을 수행하는 방법은 객체가 자율적으로 선택한다
    • 다형성
  • 한사람이 여러 역할을 수행할 수 있다

객체


객체지향 어플리케이션의 형태를 결정하는것은 역할, 책임, 협력이지만 실제로 협력에 참여하는 주체는 객체다
애플리케이션의 작은 기능조차 객체혼자 감당하기엔 복잡하기 때문에 대부분 협력을 통해 기능을 구현하게 된다
그리고 객체는 기능 공동체의 일원으로 다음을 추구한다

  • 객체는 협력적이어야 한다
    • 다른 객체에 대해서 요청, 응답에 열려있어야 합니다
  • 객체는 자율적이어야 한다
    • 객체가 무엇(What)을 수행하는지는 알 수 있지만 어떻게(How) 수행하는 지에 대해서는 알 수 없어야 한다
  • 역할과 책임을 지기 위해 필요한 상태와 행동을 스스로 관리하고 외부에서 간섭할 수 없도록 한다
    • 캡슐화

객체지향의 본질


  • 객체지향은 자율적인 객체의 공동체를 이용해서 시스템을 나누는 방법입니다.
  • 자율적인 객체란 상태와 행위를 지니며 외부에 공유하지 않고 스스로 자기 자신을 책임지는 객체입니다
  • 객체는 시스템의 기능을 구현하기 위해서 다른 객체와 협력하며 각 객체는 협력 내에서 정해진 역할을 수행합니다
  • 객체는 서로 협력하기 위해서 메시지를 전송하고 메시지를 수신한 객체는 메서드(행동)을 자율적으로 선택합니다